package myjava.costanti;

public class Root {

   public static void main(String[] args) {

      Foo o = new Foo();
   }
}

class Foo {

   /* In generale final significa che non puoi cambiare il valore di una variabile una volta che
    * e' stato asseganto. Le "costanti" in java sono le variabili con modificatori "static" e "final" */
   // this is a java constant! (naming convention: UPPERCASE_WORDS_DIVIDED_BY_UNDERSCORE)
   static final String MY_CONST = "ciao";
   // while this is just a final attribute
   private final String x = "hello";

   public Foo() {

      // ... and finally this is a simple final local variable
      final String y = "YO!";

      // none of this shit work:
      // Foo.MY_CONST = "changed?";
      // this.x = "changed?";
      //    y = "changed";

      System.out.println(Foo.MY_CONST + " " + this.x + " " + y);
   }
}
